home *** CD-ROM | disk | FTP | other *** search
/ ETO Development Tools 4 / ETO Development Tools 4.iso / Essentials / C++ A'Link Files / Mar 91 / CPlus.Dev$ 3⁄22⁄91 / 0286-Problem with Referen-Mar91 next >
Text File  |  1991-04-01  |  1KB  |  74 lines

  1. Item    1982455                         19-March-91        10:50PST
  2.  
  3. From:   D0816                           Capilano Computing, MacKenzie,PRT
  4.  
  5. To:     CPLUS.DEV$                      C++ Interest List--Developers
  6.  
  7. Item forwarded by       B0231        to BENM 
  8.  
  9. ------------------------------------------------------------------------------
  10.  
  11. Sub:    Problem with Reference Variabl
  12.  
  13.  
  14.  
  15. I am new to C++ and having some problems with using reference variables.
  16. The problem came up when I was doing exercise 6 in chapter 7 of Bjarne
  17. Stroustrup's Book. The following code is simplified so as to make it easy to
  18. see the problem.
  19.  
  20.  class classA
  21.  {
  22.    int x;
  23.    int z;
  24.  
  25.  };
  26.  
  27.  class classB :  public classA
  28.  {
  29.    int t;
  30.    int s;
  31.  };
  32.  
  33.  
  34.  
  35. void Next(classA* &p1)
  36. {
  37.    p1=0;
  38. }
  39.  
  40. main()
  41. {
  42.    classB *p ;
  43.  
  44.  
  45.    Next(p);  // This is line 27
  46.  
  47.    return 0;
  48.  }
  49.  
  50. Question:
  51.  
  52. Why do I get the following warning :
  53.  
  54. File "test.c"; line 27 # warning: conversion of lvalue needed: temporary used
  55. to initialize reference
  56.  
  57. If you compile this with the -c option you will see that C++ puts "p" into a
  58. temporary variable and then passes the the address of it to Next. It does not
  59. copy the contents of the temporary variable back into p.
  60.  
  61. Question 2:
  62.  
  63. Is this a bug or am I doing something wrong.
  64.  
  65.  
  66. In the exercise I was doing Next was really a routine for returning the next
  67. entry on a linked list.
  68.  
  69.                             Thanks
  70.  
  71.                              Neil
  72.  
  73.  
  74.